/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.clicarros.controle.anuncio;

import br.com.clicarros.dominio.anuncio.Acessorios;
import br.com.clicarros.dominio.anuncio.Anuncio;
import br.com.clicarros.dominio.anuncio.Bancos;
import br.com.clicarros.dominio.anuncio.Conforto;
import br.com.clicarros.dominio.anuncio.Janelas;
import br.com.clicarros.dominio.anuncio.Outros;
import br.com.clicarros.dominio.anuncio.Seguranca;
import br.com.clicarros.dominio.anuncio.SistemaSom;
import br.com.clicarros.dominio.navegacao.Navegacao;
import br.com.clicarros.dominio.usuario.Usuario;
import br.com.clicarros.dominio.veiculo.Categoria;
import br.com.clicarros.dominio.veiculo.Marca;
import br.com.clicarros.dominio.veiculo.Veiculo;
import br.com.clicarros.fachada.IFachada;
import br.com.clicarros.fachada.implementacao.Fachada;

import java.io.IOException;
import java.util.GregorianCalendar;

import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


/**
 *
 * @author Bruno
 */
@WebServlet(name = "ControleAnuncio", urlPatterns = {"/ControleAnuncio"})
public class ControleAnuncio extends HttpServlet {
    
    private IFachada fachada = new Fachada(); 
    
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        
   if (request.getParameter("listar") != null){
       
        List<Anuncio> anuncios = fachada.listarTodos(new Anuncio());
       
            request.setAttribute("anuncios", anuncios);
            request.getRequestDispatcher("Administrador/anuncio/anuncios.jsp").forward(request,response);
       
       
       
   }else if (request.getParameter("cadastrar") != null){
       
        Anuncio a = new Anuncio();
        // captura dados de anuncio
        a.setPlaca(request.getParameter("placa"));
        a.setLocalplaca(request.getParameter("localplaca"));
        a.setAnomodelo(Long.parseLong(request.getParameter("anomodelo")));
        a.setAnofabricacao(Long.parseLong(request.getParameter("anofabricacao")));
        a.setCor(request.getParameter("cor"));
        a.setValor(Double.parseDouble(request.getParameter("valor")));
        a.setCombustivel(request.getParameter("combustivel"));
        a.setNportas(Short.parseShort(request.getParameter("nportas")));
        a.setKm(Double.parseDouble(request.getParameter("km")));
        a.setAtivo(Boolean.parseBoolean(request.getParameter("status")));
        
       
        Veiculo v  = new Veiculo();
        v.setIdVeiculo(Integer.parseInt(request.getParameter("veiculo")));
        
        a.setVeiculo(v);
        
        
       //captura dados de acessorios do anuncio
        Seguranca s = new Seguranca();
        
        s.setAirbaglateral(Boolean.parseBoolean(request.getParameter("airbaglateral")));
        s.setAirbagmotorista(Boolean.parseBoolean(request.getParameter("airbagmotorista")));
        s.setAirbagpassageiro(Boolean.parseBoolean(request.getParameter("airbagpassageiro")));
        s.setAlarme(Boolean.parseBoolean(request.getParameter("alarme")));
        s.setBlindado(Boolean.parseBoolean(request.getParameter("blindado")));
        s.setControletracao(Boolean.parseBoolean(request.getParameter("controletracao")));
        s.setFreiosabs(Boolean.parseBoolean(request.getParameter("freiosabs")));
        
        Conforto c = new Conforto();
        
        c.setArcondicionado(Boolean.parseBoolean(request.getParameter("arcondicionado")));
        c.setArquente(Boolean.parseBoolean(request.getParameter("arquente")));
        c.setCambioautomatico(Boolean.parseBoolean(request.getParameter("cambioautomatico")));
        c.setDirecaoeletrica(Boolean.parseBoolean(request.getParameter("direcaoeletrica"))); 
        c.setDirecaohidraulica(Boolean.parseBoolean(request.getParameter("direcaohidraulica")));
        c.setPilotoautomatico(Boolean.parseBoolean(request.getParameter("pilotoautomatico")));
        c.setRetrovisoreseletricos(Boolean.parseBoolean(request.getParameter("retrovisoreseletricos")));
        c.setTravaseletricas(Boolean.parseBoolean(request.getParameter("travaseletricas")));
        c.setTrioeletrico(Boolean.parseBoolean(request.getParameter("trioeletrico")));
        c.setVolanteregulagemaltura(Boolean.parseBoolean(request.getParameter("volanteregulagemaltura")));
        
        
        Bancos b = new Bancos();
        
        b.setAjustealtura(Boolean.parseBoolean(request.getParameter("ajustealtura")));
        b.setAjusteeletrico(Boolean.parseBoolean(request.getParameter("ajusteeletrico")));
        b.setCouro(Boolean.parseBoolean(request.getParameter("couro")));
        
        
        Janelas j = new Janelas();
        
        j.setDesembacadortraseiro(Boolean.parseBoolean(request.getParameter("desembacadortraseiro")));
        j.setLimpadortraseiro(Boolean.parseBoolean(request.getParameter("limpadortraseiro")));
        j.setTetosolar(Boolean.parseBoolean(request.getParameter("tetosolar")));
        j.setVidroseletricosdianteiros(Boolean.parseBoolean(request.getParameter("vidroseletricosdianteiros")));
        j.setVidroseletricosdianteirostraseiros(Boolean.parseBoolean(request.getParameter("vidroseletricosdianteirostraseiros")));
        
        
       SistemaSom som  = new SistemaSom();
      
        
        som.setCdplayer(Boolean.parseBoolean(request.getParameter("cdplayer")));
        som.setCdplayerMP3(Boolean.parseBoolean(request.getParameter("cdplayermp3")));
        som.setEntradaUSB(Boolean.parseBoolean(request.getParameter("entradausb")));
        som.setMultimidia(Boolean.parseBoolean(request.getParameter("multimidia")));
        som.setRadioamfm(Boolean.parseBoolean(request.getParameter("radiofm")));
        som.setTocafitas(Boolean.parseBoolean(request.getParameter("tocafitas")));
        
        Outros o = new Outros();
        
        o.setAdaptadodeficientefisico(Boolean.parseBoolean(request.getParameter("adaptadodeficientefisico")));
        o.setAerofolio(Boolean.parseBoolean(request.getParameter("aerofolio")));
        o.setCalotas(Boolean.parseBoolean(request.getParameter("calotas")));
        o.setCapotamaritima(Boolean.parseBoolean(request.getParameter("capotamaritima")));
        o.setComputadorbordo(Boolean.parseBoolean(request.getParameter("computadorbordo")));
        o.setFarolneblina(Boolean.parseBoolean(request.getParameter("farolneblina")));
        o.setKitgas(Boolean.parseBoolean(request.getParameter("kitgas")));
        o.setProtetorcacamba(Boolean.parseBoolean(request.getParameter("protetorcacamba")));
        o.setRodasligaleve(Boolean.parseBoolean(request.getParameter("rodasligaleve")));
        o.setSensorchuva(Boolean.parseBoolean(request.getParameter("sensorchuva")));
        o.setSensorestacionamento(Boolean.parseBoolean(request.getParameter("sensorestacionamento")));
        o.setSensorfarol(Boolean.parseBoolean(request.getParameter("sensorfarol")));
        o.setTracao4x4(Boolean.parseBoolean(request.getParameter("tracao4x4")));
        
        Acessorios ac = new Acessorios();
        
        ac.setSeguranca(s);
        ac.setConforto(c);
        ac.setBancos(b);
        ac.setJanelas(j);
        ac.setSistemaSom(som);
        ac.setOutros(o);
           
                   
        a.setAcessorios(ac);
                      
        fachada.inserir(a);
        
        
        
        
           
            request.setAttribute("anuncio", a);
            request.getRequestDispatcher("Administrador/anuncio/CadastroAnuncioImagem.jsp").forward(request,response);

   }else if (request.getParameter("excluir") != null){
       
       String[] ids = request.getParameterValues("id");
           
                for(String id : ids){
              
                    Anuncio a = new Anuncio();
           
                    a.setIdanuncio(Integer.parseInt(id));
                    fachada.excluir(a);
                }        
             
                request.setAttribute("anuncios", fachada.listarTodos(new Anuncio()));
                request.setAttribute("mensagem", "<div id=mensagem> Anuncios(s) deletado(s)</div>");
                request.getRequestDispatcher("Administrador/anuncio/anuncios.jsp").forward(request,response);
       
   }
   else if (request.getParameter("editar") != null) {
       
       
            Anuncio a = new Anuncio();
            a.setIdanuncio(Integer.parseInt(request.getParameter("editar")));
            
            
            
            request.setAttribute("marcas", fachada.listarTodos(new Marca()));
            request.setAttribute("categorias", fachada.listarTodos(new Categoria()));
            request.setAttribute("veiculos", fachada.listarTodos(new Veiculo()));
            request.setAttribute("anuncio", fachada.consultarId(a));
            request.getRequestDispatcher("Administrador/anuncio/AlterarAnuncio.jsp").forward(request, response);
       
   
   
   
   }
   else if (request.getParameter("cadastroanuncio") != null){
                
            request.setAttribute("marcas", fachada.listarTodos(new Marca()));
            request.setAttribute("categorias", fachada.listarTodos(new Categoria()));
            request.setAttribute("veiculos", fachada.listarTodos(new Veiculo()));
            request.getRequestDispatcher("Administrador/anuncio/CadastroAnuncio.jsp").forward(request,response);
          }    
   else if(request.getParameter("filtrar") != null){
       Anuncio a = new Anuncio();
       
       a.setCor(request.getParameter("cor"));
       a.setCombustivel(request.getParameter("combustivel"));
       
       Veiculo v = new Veiculo();
       
       v.setModelo(request.getParameter("veiculo"));
       
       a.setVeiculo(v);
       
       request.setAttribute("anuncios", fachada.consultar(a));
       request.getRequestDispatcher("Administrador/anuncio/anuncios.jsp").forward(request,response);
   } else if (request.getParameter("detalhar") != null) {
       
       
            Anuncio a = new Anuncio();
            a.setIdanuncio(Integer.parseInt(request.getParameter("detalhar")));
            
            Navegacao navegacao = new Navegacao();
            
            navegacao.setUsuario((Usuario)request.getSession().getAttribute("usuarioLogado"));
            navegacao.setAnuncio(a);
            navegacao.setData(new GregorianCalendar());
            
            
            historicoNavegacao(navegacao);

            request.setAttribute("anuncio", fachada.consultarId(a));
            request.getRequestDispatcher("detalheAnuncio.jsp").forward(request, response);
       
   
   
   
   }else if (request.getParameter("listarAnuncios") != null){
       
        List<Anuncio> anuncios = fachada.listarTodos(new Anuncio());
       
            request.setAttribute("anuncios", anuncios);
            request.getRequestDispatcher("index.jsp").forward(request,response);
   
   
 }  
    
}
    
    private void historicoNavegacao(Navegacao navegacao){
        
        fachada.inserir(navegacao);
        
    }
}